package com.yinhe.music.yhmusic.play;

import com.yinhe.music.yhmusic.listener.OnPlayerEventListener;
import com.yinhe.music.yhmusic.model.Music;

import java.util.List;

public interface IPlayManager {
    /**
     * 获取正在播放音乐时长
     */
    long getDuration();

    /**
     * 获取正在播放的音乐
     */
    Music getPlayingMusic();

    /**
     * 更新播放列表
     */
    void updateMusicList();

    /**
     * 获取播放进度
     */
    int getPlayingProgress();

    /**
     * 获取正在播放的本地歌曲的序号
     */
    int getPlayingPosition();


    /**
     * @return 播放状态
     */
    boolean isPlaying();

    /**
     * @return 暂停状态
     */
    boolean isPause();


    /**
     * 播放或暂停
     */
    void playPause();

    /**
     * 播放全部
     */
    void playAll(List<Music> mList);

    /**
     * 播放列表中指定歌曲
     * @param position 歌曲位于列表中的位置
     */
    void playPosition(List<Music> musicList, int position);

    /**
     * 播放指定歌曲
     * @param music 歌曲
     */
    void playMusic(Music music);

    /**
     * 暂停播放
     */
    int pause();

    /**
     * 继续播放
     */
    int resume();

    /**
     * 下一首
     */
    int next();

    /**
     * 上一首
     */
    int prev();

    /**
     * 停止播放
     */
    void stopPlaying();

    /**
     * 跳转到指定的时间位置
     * @param msec 时间
     */
     void seekTo(int msec);


    /**
     * 设置播放监听
     */
     void addOnPlayEventListener(OnPlayerEventListener listener);

    /**
     * 移除播放监听
     */
    void removePlayEventListner(OnPlayerEventListener listener);
}
